<?php

class AdminController extends Zend_Controller_Action
{

    public function init()
    {
       	$auth = Zend_Auth::getInstance();
		if (!$auth->hasIdentity()) {
		    $this->_redirect('/login/');
		}
		
		//Creamos el menú lateral
		
		$menuLateral = new Application_Model_Menu();
		//Princiapal
		$menuLateral->setMenu("Principal");		
		$menuLateral->setSubmenu("Principal", "Home", "mnuPincipalHome", "/admin/home/");
//		$menuLateral->setSubmenu("Principal", "On estem", "mnuPincipalOnEstem", "/reservas/completadas/");
//		$menuLateral->setSubmenu("Contacto", "Contacte", "mnuPincipalContacto", "/reservas/completadas/");
		
		//Ofertes i demandes
		$menuLateral->setMenu("Ofertes i demandes");
		$menuLateral->setSubmenu("Ofertes i demandes", "Productes i equipaments", "mnuProductes", "/admin/productes/");
		$menuLateral->setSubmenu("Ofertes i demandes", "Ofertes i serveis", "mnuOfertes", "/admin/ofertes/");
		$menuLateral->setSubmenu("Ofertes i demandes", "Borsa treball", "mnuBorsaTreball", "/admin/borsa/");

		//EL polígon la Ferreria
		$menuLateral->setMenu("El Polígon la Ferreria");		
		$menuLateral->setSubmenu("El Polígon la Ferreria", "Informació i comunicats", "mnuComunicats", "/admin/comunicats/");
		
		//Empreses del polígon
		$menuLateral->setMenu("Empreses del polígon");
		$menuLateral->setSubmenu("Empreses del polígon", "Empreses", "mnuEmpreses", "/admin/empreses/");
		
		
		//Manteniments
		$menuLateral->setMenu("Manteniments");
		$menuLateral->setSubmenu("Manteniments", "Llistat activitats", "mnuListActivitas", "/admin/llistat/value/list_actividades");
		$menuLateral->setSubmenu("Manteniments", "Llistat secc. productes", "mnuListProductes", "/admin/llistat/value/list_productes");
		$menuLateral->setSubmenu("Manteniments", "Llistat ofertes tipus", "mnuListOfTipus", "/admin/llistat/value/list_ofertes_tipus");
		$menuLateral->setSubmenu("Manteniments", "Llistat ofertes llocs", "mnuListOfLlocs", "/admin/llistat/value/list_ofertes_llocs");
		
		$this->view->menuLat = $menuLateral->render();
		$this->_helper->layout()->setLayout('layout-back');
    }

    public function indexAction()
    {
	    return $this->_redirect("/admin/home/");
    }

    public function loginAction()
    {
    	
    }

    public function homeAction()
    {
    	$request = $this->getRequest();
    	$form = new Application_Form_Home();
    	
    	if($this->getRequest()->isPost())
    	{
    		if ($form->isValid($request->getPost())) {
                $home = new Application_Model_Home($form->getValues());
                $mapper  = new Application_Model_HomeMapper();
                $mapper->save($home);
            }
            else 
            {
            	//Error form
            	echo "error form";
            }
            
    	}
    	else
    	{
    		$id = '1'; 
	        $home = new Application_Model_Home();	        
	        
	        $mapper = new Application_Model_HomeMapper();
	    	$mapper->find($id, $home);
	    	
	    	$valores = array('id_home'	 			=> $home->getId_home(),
	    				     'destacado_titulo' 	=> $home->getDestacado_titulo(),
	    				     'destacado_subtitulo' 	=> $home->getDestacado_subtitulo(),
	    					 'destacado_contenido' 	=> $home->getDestacado_contenido(),
	    					 'testimonio_titulo' 	=> $home->getTestimonio_titulo(),
	    					 'testimonio_contenido' => $home->getTestimonio_contenido(),
	    					 'principal_titulo' 	=> $home->getPrincipal_titulo(),
	    					 'principal_subtitulo' 	=> $home->getPrincipal_subtitulo(),
	    					 'principal_contenido' 	=> $home->getPrincipal_contenido(),
	    					 'texto_promo_titulo' 	=> $home->getTexto_promo_titulo(),
	    					 'texto_promo_contenido'=> $home->getTexto_promo_contenido(),
	    					 'imagen_promo' 		=> $home->getImagen_promo(),
	    					 'imagen_tipo' 			=> $home->getImagen_tipo()
	    	);
    		
			$form->populate($valores);	    		    	
	    	
    	}
    	$this->view->form = $form;
    }

    public function empresesAction()
    {
        // action body
    }

    public function empresesDetallAction()
    {
        $form = new Application_Form_Empreses();
        
        $empMapper = new Application_Model_EmpresasMapper();
        
        if($this->_request->isPost())
        {
        	if ($form->isValid($this->getRequest()->getPost())) {
        		$empresa = new Application_Model_Empresas($form->getValues());
        		
        		$date = Zend_Date::now();
            	            	
	           	$upload = new Zend_File_Transfer_Adapter_Http();
	           	$urlImage = APPLICATION_PATH.'/../public/images/empresas/';
	           	$nameImage = $date->getTimestamp().'.jpg';
	           	$urlWeb = "/images/empresas/$nameImage";
				$upload->addFilter('Rename', array( 
					'target'    => $urlImage.$nameImage,
					'overwrite' => true));
				try {
					// This takes care of the moving and making sure the file is there
					if(!$upload->receive() && $this->getRequest()->getPost('imagen') =='') $urlWeb = '';
					
					if($upload->receive())
					{
						if($this->getRequest()->getPost('imagen')!='')
						{
							$path = APPLICATION_PATH.'/../public'.$this->getRequest()->getPost('imagen');							
							unlink($path);
						}
						$empresa->setImagen($urlWeb);
					}
				} catch (Zend_File_Transfer_Exception $e) {
					echo $e->message();
				}
				
				$empMapper->save($empresa);
            	return $this->_helper->redirector("empreses", "admin" );            	
            }
            else
            {
            	echo "errors";
            	$this->view->errorForm =  $form->showErrors($form->getMessages());
            }
        }
        else 
        {
        	$id = $this->_request->getParam('value');
        	$empresa = new Application_Model_Empresas();
        	$empMapper->find($id, $empresa);
        	$valores = array('id_empresa' => $empresa->getId_empresa(),
	    				     'titulo' => $empresa->getTitulo(),
	    				     'texto' => $empresa->getTexto(),
        					 'imagen' => $empresa->getImagen(),
        					 'imagen_tipo' => $empresa->getImagen_tipo(),
        					 'direccion' => $empresa->getDireccion(),
        					 'actividad' => $empresa->getActividad(),
        					 'cp' => $empresa->getCp(),
        					 'localidad' => $empresa->getLocalidad(),
        					 'telefono' => $empresa->getTelefono(),
        					 'fax' => $empresa->getFax(),
	    					 'email' => $empresa->getEmail());
        	
        	$form->populate($valores);        	
        	
        }
        $this->view->form = $form;
    }

    public function productesAction()
    {
        // action body
    }

    public function productesDetallAction()
    {
    	if($this->_request->isPost()){
    		$this->getRequest()->setPost('oferta_lugar', 0);
    		$this->getRequest()->setPost('oferta_tipo', 0);
    	}
        $this->guardaDetalleAction('P', 'productes');
    }

    public function ofertesAction()
    {
        
    }

    public function ofertesDetallAction()
    {
    	if($this->_request->isPost())
    		$this->getRequest()->setPost('tipo_producto', 0);
        $this->guardaDetalleAction('O', 'ofertes');
    }

    /**
     * Guarda para productos, ofertas y bolsa
     * @param String $tipo_reg
     * @param String $retorno
     *
     */
    public function guardaDetalleAction($tipo_reg, $retorno)
    {
        $form = new Application_Form_Productes();
        
        $prodMapper = new Application_Model_ProductosMapper();
        
        if($this->_request->isPost())
        {
        	//Obligamos a que el tipo de registro siempre sea
			//P de productes
        	$this->getRequest()->setPost('tipo_registro', $tipo_reg);
        	if ($form->isValid($this->getRequest()->getPost())) {
        		$empresa = new Application_Model_Productos($form->getValues());
        		$date = Zend_Date::now();
            	            	
	           	$upload = new Zend_File_Transfer_Adapter_Http();
	           	$urlImage = APPLICATION_PATH.'/../public/images/productos/';
	           	$nameImage = $date->getTimestamp().'.jpg';
	           	$urlWeb = "/images/productos/$nameImage";
				$upload->addFilter('Rename', array( 
					'target'    => $urlImage.$nameImage,
					'overwrite' => true));
								
				try {
					// This takes care of the moving and making sure the file is there
					if(!$upload->receive() && $this->getRequest()->getPost('imagen') =='') $urlWeb = '';
					
					if($upload->receive())
					{
						if($this->getRequest()->getPost('imagen')!='')
						{
							$path = APPLICATION_PATH.'/../public'.$this->getRequest()->getPost('imagen');
							unlink($path);
						}
						$empresa->setImagen($urlWeb);
					}
					
					// Dump out all the file info
					Zend_Debug::dump($upload->getFileInfo());
				} catch (Zend_File_Transfer_Exception $e) {
					echo $e->message();
				}
				
				
				
				$prodMapper->save($empresa);
            	return $this->_helper->redirector($retorno, "admin" );            	
            }
            else
            {
            	$this->view->errorForm =  $form->showErrors($form->getMessages());
            }
        }
        else 
        {
        	$id = $this->_request->getParam('value');
        	$producto = new Application_Model_Productos();
        	$prodMapper->find($id, $producto);
        	$valores = array('id_producto' 	=> $producto->getId_producto(),
        					 'tipo_registro'=> $producto->getTipo_registro(),
	    				     'titulo' 		=> $producto->getTitulo(),
	    				     'descripcion' 	=> $producto->getDescripcion(),
        					 'direccion' 	=> $producto->getDireccion(),
        					 'imagen' 		=> $producto->getImagen(),
        					 'tipo_producto'=> $producto->getTipo_producto(),
        					 'fecha' 		=> $producto->getFecha(),
        					 'documento' 	=> $producto->getDocumento(),
        					 'empresa' 		=> $producto->getEmpresa(),
        					 'contacto' 	=> $producto->getContacto(),
        					 'telefono' 	=> $producto->getTelefono(),
	    					 'email' 		=> $producto->getEmail(),
        	 				 'oferta_lugar' => $producto->getOferta_lugar(),
        			  		 'oferta_tipo' => $producto->getOferta_tipo());
        	$form->populate($valores);
        }
        $this->view->form = $form;
    }

    public function borsaAction()
    {
        // action body
    }

    public function borsaDetallAction()
    {
    	if($this->_request->isPost()){
    		$this->getRequest()->setPost('tipo_producto', 0);
    		$this->getRequest()->setPost('oferta_lugar', 0);
    		$this->getRequest()->setPost('oferta_tipo', 0);
    	}
        $this->guardaDetalleAction('B', 'borsa');
    }

    public function comunicatsAction()
    {
    	
    }

    public function comunicatsDetallAction()
    {
    	if($this->_request->isPost())
       	{
    		$this->getRequest()->setPost('tipo_producto', 0);
    		$this->getRequest()->setPost('empresa', 0);
    		$this->getRequest()->setPost('oferta_lugar', 0);
    		$this->getRequest()->setPost('oferta_tipo', 0);
    	}
    	
    	//$this->guardaDetalleAction('C', 'comunicats'); //Tiporeg, Retorno
        
    	$form = new Application_Form_Informacio();
    	
    	$prodMapper = new Application_Model_ProductosMapper();
    	
    	if($this->_request->isPost())
    	{
    		$this->getRequest()->setPost('tipo_registro', 'C');
    		if ($form->isValid($this->getRequest()->getPost())) {
    			$empresa = new Application_Model_Productos($form->getValues());
    			$date = Zend_Date::now();
				
    			$upload = new Zend_File_Transfer_Adapter_Http();
    			$urlPdf= APPLICATION_PATH.'/../public/documentos/productos/';
    			$namePdf = $date->getTimestamp().'.pdf';
    			$urlWeb = "/documentos/productos/$namePdf";
    			$upload->addFilter('Rename', array(
    					'target'    => $urlPdf.$namePdf,
    					'overwrite' => true));
    			try {
    				if(!$upload->receive() && $this->getRequest()->getPost('documento') =='') $urlWeb = '';
    				
    				if($upload->receive())
    				{
    					if($this->getRequest()->getPost('documento')!='')
    					{
    						$path = APPLICATION_PATH.'/../public'.$this->getRequest()->getPost('documento');
    						unlink($path);
    					}
    					$empresa->setDocumento($urlWeb);
    				}
    				
    				
    				// Dump out all the file info
    				Zend_Debug::dump($upload->getFileInfo());
    			} catch (Zend_File_Transfer_Exception $e) {
    				echo $e->message();
    			}
    			$prodMapper->save($empresa);
    			return $this->_helper->redirector('comunicats', "admin" );
    		}
    		else
    		{
    			$this->view->errorForm =  $form->showErrors($form->getMessages());
    		}
    	}
    	else
    	{
 			$id = $this->_request->getParam('value');
    		$producto = new Application_Model_Productos();
    		$prodMapper->find($id, $producto);
    		$valores = array('id_producto' 	=> $producto->getId_producto(),
    						 'tipo_registro'=> $producto->getTipo_registro(),
    						 'titulo' 		=> $producto->getTitulo(),
    						 'descripcion' 	=> $producto->getDescripcion(),
    						 'direccion' 	=> $producto->getDireccion(),
    						 'tipo_producto'=> $producto->getTipo_producto(),
    						 'fecha' 		=> $producto->getFecha(),
    						 'documento' 	=> $producto->getDocumento(),
    						 'empresa' 		=> $producto->getEmpresa(),
    						 'contacto' 	=> $producto->getContacto(),
    						 'telefono' 	=> $producto->getTelefono(),
    						 'email' 		=> $producto->getEmail(),
    		 				 'oferta_lugar' => $producto->getOferta_lugar(),
    						 'oferta_tipo'  => $producto->getOferta_tipo());
    									 
			$form->populate($valores);
     
    	}
		$this->view->form = $form;
    }

    public function llistatAction()
    {
    	$tabla = $this->getRequest()->getParam('value', 'list_actividades');
    	
    	switch ($tabla) {
    		case 'list_actividades':
    			$lista = 'actividades';
    			break;
    		case 'list_productes':
	    		$lista = 'productes';
	    		break;
    		case 'list_ofertes_tipus':
	    		$lista = 'ofertastipo';
	    		break;
    		case 'list_ofertes_llocs':
	    		$lista = 'ofertaslugar';
	    		break;
    		default:
    			;
    		break;
    	}
    	$this->view->queLista = $lista;
    	$this->view->queTabla = $tabla;
    }

    public function llistatDetallAction()
    {
    	$tabla = $this->getRequest()->getParam('lista', 'list_actividades');
    	
    	$form = new Application_Form_List();    	
    	
    	$listaMapper = new Application_Model_ListaMapper();
    	
    	if($this->_request->isPost())
    	{
    		if ($form->isValid($this->getRequest()->getPost())) 
    		{
		   		$lista = new Application_Model_Lista($form->getValues());		   				   		
		   		$listaMapper->save($lista, $tabla);
		   		return $this->_redirect("/admin/llistat/value/$tabla");
    		}
    	}
    	else
    	{
    		$lista = new Application_Model_Lista();
    		
    		$id = $this->_request->getParam('value');
    		
    		
    		$listaMapper->find($id, $lista, $tabla);
	        
	        $valores = array('id' 	     	=> $lista->getId(),
	        				 'descripcion'	=> $lista->getDescripcion());
	        	
	        $form->populate($valores);        	
    	}
    	
    	$this->view->form = $form;
    }
}


